package com.ruoyi.system.domain;

import java.io.Serializable;
import java.util.Date;

import io.netty.util.internal.UnstableApi;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import javax.validation.constraints.NotNull;

/**
 * busi_project
 *
 * @author
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@ApiModel(value = "BusiProject", description = "项目信息")
public class BusiProject implements Serializable {
    /**
     * 主键
     */
    @ApiModelProperty(value = "项目ID", dataType = "String", required = true)
    @NotNull
    private String projectId;

    /**
     * 项目编码
     */
    @ApiModelProperty(value = "项目编码", dataType = "String", required = true)
    private String projectCode;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称", dataType = "String", required = true)

    private String projectName;

    /**
     * 所属部门
     */
    @ApiModelProperty(value = "所属部门", dataType = "Long", required = true)

    private Long deptId;

    /**
     * 项目负责人
     */
    @ApiModelProperty(value = "项目负责人", dataType = "Long", required = true)

    private Long projectLeader;

    /**
     * 技术负责人
     */
    @ApiModelProperty(value = "技术负责人", dataType = "Long", required = true)

    private Long techLeader;

    /**
     * 项目销售额（元）
     */
    @ApiModelProperty(value = "项目销售额（元）", dataType = "Long", required = true)

    private Long projectSales;

    /**
     * 总工作量（人天）
     */
    @ApiModelProperty(value = "总工作量（人天）", dataType = "Long", required = true)

    private Long totalWorkload;

    /**
     * 可分配工作量（人天）
     */
    @ApiModelProperty(value = "可分配工作量（人天）", dataType = "Long", required = true)

    private Long distributableWorkload;

    /**
     * 项目工时
     */
    @ApiModelProperty(value = "项目工时", dataType = "Integer", required = true)

    private Integer projectWorkhours;

    /**
     * PSO项目工时
     */
    @ApiModelProperty(value = "PSO项目工时", dataType = "Integer", required = true)

    private Integer psoWorkhours;

    /**
     * 研发项目工时
     */
    @ApiModelProperty(value = "研发项目工时", dataType = "Integer", required = true)

    private Integer prdWorkhours;

    /**
     * SRD项目工时
     */
    @ApiModelProperty(value = "SRD项目工时", dataType = "Integer", required = true)

    private Integer srdWorkhours;

    /**
     * 其他工时
     */
    @ApiModelProperty(value = "其他工时", dataType = "Integer", required = true)
    private Integer othersWorkhours;

    @ApiModelProperty(value = "创建时间", dataType = "Date", required = true)
    private Date createTime;

    @ApiModelProperty(value = "", dataType = "Long", required = true)
    private Long createBy;

    @ApiModelProperty(value = "更新时间", dataType = "Date", required = true)
    private Date updateTime;

    @ApiModelProperty(value = "", dataType = "Long", required = true)
    private Long updateBy;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注", dataType = "String", required = true)
    private String remarks;

    /**
     * 项目开始时间
     */
    @ApiModelProperty(value = "项目开始时间", dataType = "Date", required = true)
    private Date startTime;

    /**
     * 项目结束时间
     */
    @ApiModelProperty(value = "项目结束时间", dataType = "Date", required = true)
    private Date endTime;

    /**
     * 项目阶段：0:项目结束；1:项目建设中；2:项目上线阶段；3:项目初验；4:项目终验
     */
    @ApiModelProperty(value = "项目阶段", dataType = "Integer", required = true)
    private Integer projectPhase;

    /**
     * 项目类型：1、工程项目；2、在建项目；3、维护项目
     */
    @ApiModelProperty(value = "项目类型", dataType = "Integer", required = true)
    private Integer projectType;

    @ApiModelProperty(value = "", dataType = "Integer", required = true)
    private Integer status;

    @ApiModelProperty(value = "", dataType = "Integer", required = true)
    private Integer psoCompleteWorkhours;

    @ApiModelProperty(value = "", dataType = "Integer", required = true)
    private Integer prdCompleteWorkhours;

    @ApiModelProperty(value = "", dataType = "Integer", required = true)
    private Integer srdCompleteWorkhours;

    @ApiModelProperty(value = "", dataType = "Integer", required = true)
    private Integer othersCompleteWorkhours;

    /**
     * 简介
     */
    @ApiModelProperty(value = "简介", dataType = "String", required = true)
    private String introduce;

    /**
     * 外部工时
     */
    @ApiModelProperty(value = "外部工时", dataType = "Integer", required = true)
    private Integer outWorkhours;

    private static final long serialVersionUID = 1L;
}